home *** CD-ROM | disk | FTP | other *** search
/ Plug-In Power Pack for Netscape Communicator / Plug-In Power Pack for Netscape Communicator.iso / plugins / dataviews / dvtools / demos / dwpdemo / dwp_rebind.c < prev    next >
C/C++ Source or Header  |  1997-05-08  |  3KB  |  103 lines

  1. #ifndef lint
  2. static char SccsId[]= "@(#)dwp_rebind.c    V1.6    3/15/95";
  3. #endif
  4.  
  5. /*------------------------------------------------------------------
  6. | file name -- dwp_rebind.c
  7. |
  8. | functions             Description
  9. | ---------             -----------
  10. | RebindData            Rebinds DV-Draw variables to Application Data.
  11. | rebind                Rebinds a specific variable to application data.
  12. | TermData              Frees the Data Table.
  13. |-----------------------------------------------------------------*/
  14.  
  15. #include "std.h"
  16. #include "dvstd.h"
  17. #include "dvtools.h"
  18. #include "Tfundecl.h"
  19. #include "dvGR.h"
  20. #include "dwp_vars.h"
  21. #include "dwp_data.h"
  22. #include "VGfundecl.h"
  23. #include "VTfundecl.h"
  24. #include "dwp_fundecl.h"
  25.  
  26.  
  27.  
  28. /***************** Begin Function Declarations *************/
  29. LOCAL  ADDRESS rebind V_P_((OBJECT vd_obj, ADDRESS vdp, ADDRESS args));
  30. /***************** End Function Declarations *************/
  31.  
  32. /*-----------------------------------------------------------------
  33. |
  34. |  RebindData
  35. |       Traverses the view's vdps, checking to see if they need to
  36. |       be rebound to real-time data buffers.
  37. */
  38. void 
  39. RebindData (view)
  40.      VIEW view;
  41. {
  42.   /* Rebind all the vdps that match the table of real-time data.
  43.   |  Get the drawing from the view and then all rebind() for
  44.   |  all the variables.
  45.   */
  46.   TobForEachVdp (TviGetDrawing (view), rebind, NULL);
  47. }
  48.  
  49. /*-----------------------------------------------------------------
  50. |
  51. |  rebind
  52. |       Gets the vdp's name, if it matches one in the DataTable, rebind
  53. |       the buffer to the real-time buffer.
  54. */
  55. /* ARGSUSED */
  56. LOCAL ADDRESS 
  57. rebind (vd_obj, vdp, args)
  58.      OBJECT vd_obj;
  59.      ADDRESS vdp;
  60.      ADDRESS args;
  61. {
  62.   CHAR *varname;
  63.   SYMNODE node;
  64.   DATA_INFO *data_info;
  65.  
  66.   /* Get the vdp's name */
  67.   varname = VGvdvarname (vdp);
  68.  
  69.   /* See if the name is in the Table of Application Variables */
  70.   node = VTstkeyfind (DataTable, varname);
  71.   if (node)
  72.     {
  73.       /* Rebind the data to the application buffer */
  74.       data_info = (DATA_INFO *) VTsnvalue (node);
  75.       TvdPutBuffer (vdp, data_info->bufptr);
  76.     }
  77.   return NULL;
  78. }
  79.  
  80. /*-----------------------------------------------------------------
  81. |
  82. |  TermData
  83. |       Frees the Data Table.
  84. */
  85. void TermData 
  86. V_P_ ((void))
  87. {
  88.   CHAR *varname;
  89.   SYMNODE node;
  90.  
  91.   /* Destroy the strings cloned in the table */
  92.   while (VTstlen (DataTable) > 0)
  93.     {
  94.       node = VTstsnget (DataTable, 0);
  95.       varname = VTsnkey (node);
  96.       S_FREE (varname);
  97.       VTstsnremove (DataTable, node);
  98.     }
  99.  
  100.   /* Destroy the table itself */
  101.   VTstdestroy (DataTable);
  102. }
  103.